import abc


class Trainer(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def optimizer_func(self):
        pass

    @abc.abstractmethod
    def loss_func(self, ground_truth, prediction):
        pass

    @abc.abstractmethod
    def train(self, data_manager, saver):
        pass

